/**
 * @description 用户相关
*/

import { encrypt, decrypt } from '@/components/libs/jsencrypt.js'
import uniFiler from '@/components/libs/uni-filer.js'
import { login, logout } from '@/api/system/user.js'

export default {
	// 登录
	login ({ vm }) {
		let user = vm.getCurrentUser()
		let username = user.userName
		let password = decrypt(user.password)
		return vm.$store.dispatch('Login', {
			username,
			password
		})
	},
	// 登出
	logout ({ vm, isShowMsg } = {}) {
		let defer = vm.hasNetwork()
		defer = defer.then(b => {
			// 无网
			if (!b) {
				return true
			}
			let token = vm.$store.state.vuex_token
			if (token) {
				// 在线退出
				return vm.$store.dispatch('Logout').then(res => {
					if (isShowMsg !== false) {
						vm.$u.toast(res.msg)
					}
				})
			}
		})

		defer.finally(() => {
			// 清除登录相关数据
			this.clearLoginData({ vm })
			// 跳转至登录页面
			uni.reLaunch({
				url: '/pages/sys/login/index'
			})
		})
	},
	// 清除登录相关数据
	clearLoginData ({ vm }) {
		// 清除token
		vm.$u.vuex('vuex_token', '')
		// 清除运行模式
		vm.$u.vuex('vuex_mode', '')
		// 配置信息
		let remember = vm.$store.state.vuex_remember || {}
		let rememberPassword = false
		if (typeof remember.rememberPassword === 'boolean') {
		  rememberPassword = remember.rememberPassword ? true : false
		}
		// 清除用户信息
		let user = vm.getCurrentUser() || {}
		let users = vm.$store.state.vuex_users
		users = Array.isArray(users) ? users : []
		// 非记住密码
		if (!rememberPassword) {
			users = users.filter(item => {
				return item.userName !== user.userName
			})
			vm.$u.vuex('vuex_user', {})
			vm.$u.vuex('vuex_users', users)
		}
		// 删除头像图片
		if (user.avatarLocalPath) {
			uniFiler.deleteImage({ path: user.avatarLocalPath })
		}
		// 删除签名图片
		if (user.signLocalPath) {
			uniFiler.deleteImage({ path: user.signLocalPath })
		}
	}
}
